//
//  AppDelegate.swift
//  dugeweibo
//
//  Created by pelesys on 16/8/3.
//  Copyright © 2016年 杜方宜. All rights reserved.
//
/**
 Module功能模块类
 Main主控制器
 FYMainViewController()相当于 alloc init
 */

import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {

        //获取用户信息
        let account = FYUserAccount.loadAccout()
        print(account ?? "")
        window = UIWindow(frame:UIScreen.main.bounds)
        window?.makeKeyAndVisible()
                //设置主题色
        setThemeColor()
        
        //注册通知
        registerNotification()
        
        //设置跟视图控制器
        window?.rootViewController = defaultRootController()

        return true
    }
   //MARK:-设置nav tab主题色
    private func setThemeColor(){
        //配置文件设置颜色 设置主题色要尽早设置
        UINavigationBar.appearance().tintColor = themeColor
        UITabBar.appearance().tintColor = themeColor
    }
    //MARK:-监听通知
    private func registerNotification(){
        //object  观察某个对象发出的通知, 如果为nil 就是观测所有对象发出的通知
        NotificationCenter.default.addObserver(self, selector: #selector(switchToRootVC(noti:)), name:NSNotification.Name(rawValue: AppSwitchRootViewControler) , object: nil)
    }
    
    
    //MARK:-切换跟视图控制器
    @objc private func switchToRootVC(noti: NSNotification){
        print(noti)
        //跳转到MainVC
        if (noti.object as? String) != nil {
            window?.rootViewController = FYWelComeViewController()
            return
        }
        
        window?.rootViewController = FYMainViewController()
    }
    
    
    //MARK:移除通知 编码规范而已 没有任何作用
    deinit{
        NotificationCenter.default.removeObserver(self)
    }
    
    //MARK:判断用户是否登录 并且是否更新版本
    private func defaultRootController() ->UIViewController{
        if FYUserAccountViewModel().userLogin {
            //判断是否是新版本
//            if isNewVersion() {
//                return FYNewFeatureCollectionViewController()
//            }
            return isNewVersion() ? FYNewFeatureCollectionViewController() : FYWelComeViewController()
        }
        return FYMainViewController()
    }
    
    
    
    //MARK:检测是否是新版本
    private func isNewVersion() ->Bool{
        //比较新旧版本
        //1.获取新版本
        let versionStr = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String
        let versionNum = Double(versionStr)
        //2.获取旧版本 一般存放在沙盒中
        let key = "sandBoxKey"
        let userdefaults = UserDefaults.standard
        let lastVersion = userdefaults.double(forKey: key)
        
        //3.保存新版本
        userdefaults.set(versionNum!, forKey: key)
        //同步沙盒
        userdefaults.synchronize()
        //4.比较新旧版本
        return versionNum! > lastVersion
    }
    
    

}

